Related art input output (IO) schedulers for scheduling IO commands (e.g., read commands, write commands, and erase commands) for a mass storage device (or “persistent storage” device) may run in the kernel space of the operating system of a computer, and may receive IO commands from various applications, and schedule the IO commands without regard for the characteristics of each application. For example, some applications may prioritize (e.g., emphasize) high IO throughput, some may prioritize low IO latency, and some may prioritize having IO requests executed by a certain time (or “deadline”). Failing to take these characteristics into account may result in poor scheduler performance. Moreover, running in the kernel space may result in a loss in performance caused by the burden of frequent context switches between user space and kernel space.
Thus, there is a need for an IO scheduler providing improved performance.